home *** CD-ROM | disk | FTP | other *** search
- ;
- ; *************************
- ; *** SECTVIEW.COM v0.2 ***
- ; *************************
- ; Visualizacion de un sector predeterminado
- ;
- ; Juan C. Enrique
- ;
- ; PRIMERA VERSION: 07/04/1992
- ;
- ;
-
- CODE_SEG SEGMENT PUBLIC
- ASSUME CS:CODE_SEG, DS:CODE_SEG
-
- ORG 100h
-
- SECTVIEW_COM:
-
- JMP START
-
- num_sect DB 0,0
- bufftec DB 5,0,0,0,0,0,0
-
- START:
- MOV AL,0
- MOV CX,0
- MOV DH,24
- MOV DL,79
- MOV BH,7
- MOV AH,6
- INT 10H
- MOV DX,0 ;
- MOV BH,0 ;
- MOV AH,2 ;
- INT 10H ; CLS
-
- MOV DX,OFFSET MSG0
- MOV AH,9
- INT 21H
-
- START2:
- MOV DX,OFFSET MSG00
- MOV AH,9
- INT 21H
-
- MOV DX,OFFSET bufftec
- MOV AH,10
- INT 21H ; Lee cadena tecl. (4+1 BYTES)
-
-
- MOV DI,OFFSET bufftec+2 ; cadena entrada
- CALL CONVERT ; conversion
- MOV WORD PTR [num_sect],AX ; almacena valor convertido en WORD
-
- XOR AX,AX ; drive A:
- MOV DX,WORD PTR [num_sect] ; num. de sector marcado
- MOV BX,OFFSET BUFFER ; dir transferencia en RAM
- MOV CX,1
-
- CLC
- INT 25H
- POP DI
- JC error ; error de lectura
-
- ; salida por pantalla
-
- MOV DX,OFFSET MSG1
- MOV AH,9
- INT 21H ; escribe lineas
-
- MOV CX,512 ; bytes por sector
- MOV BX,OFFSET BUFFER ; dir datos sector
- BUCLE1:
- MOV DL,BYTE PTR [BX] ; byte del buff. del sector
- CMP DL,32
- JG BCONT ; si ascii CL superior a 32(space)
-
- MOV DL,32
- BCONT:
- MOV AH,2
- INT 21H ; saca ASCII por pantalla
-
- INC BX ; inc cont. buffer
- LOOP BUCLE1
-
- MOV DX,OFFSET MSG1
- MOV AH,9
- INT 21H ; lineas
-
- MOV DX,OFFSET MSG2
- INT 21H
- INT 20H ; Vuelve al DOS
-
- ;
- ; =============================================================
- ; Esta rutina convierte el ascii de cuatro caracteres apuntado
- ; por DI en su correspondiente numero y lo convierte en una
- ; palabra (2bytes) que devuelve en AX.
- ; =============================================================
- ;
-
- CONVERT:
- MOV AL,BYTE PTR [DI+0]
- CALL convert_hex_digit
- JC valor_incorrecto
- SHL AL,1
- SHL AL,1
- SHL AL,1
- SHL AL,1
- PUSH AX
- MOV AL,BYTE PTR [DI+1]
- JC valor_incorrecto
- CALL convert_hex_digit
- POP BX
- OR AL,BL
- MOV AH,AL
- PUSH AX
- MOV AL,BYTE PTR [DI+2]
- CALL convert_hex_digit
- JC valor_incorrecto
- SHL AL,1
- SHL AL,1
- SHL AL,1
- SHL AL,1
- PUSH AX
- MOV AL,BYTE PTR [DI+3]
- CALL convert_hex_digit
- JC valor_incorrecto
- POP BX
- OR AL,BL
- MOV BL,AL
- POP AX
- MOV AL,BL
- RET
-
- ;
- ; Errores
- ;
-
- valor_incorrecto:
-
- MOV DX,OFFSET MSG51
- MOV AH,9
- INT 21H
- INT 20H
-
- error:
-
- MOV DX,OFFSET MSG52
- MOV AH,9
- INT 21H
- INT 20H
-
- ;-----------------------------------------------------
- ; P.Norton:
- ; Convierte el car de AL en un NIBBLE devuelto en AL
- ; carry se activa si hay error
- ;-----------------------------------------------------
-
- CONVERT_HEX_DIGIT:
-
- CMP AL,'0'
- JB BAD_DIGIT
- CMP AL,'9'
- JA TRY_HEX
- SUB AL,'0'
- CLC
- RET
- TRY_HEX:
- CMP AL,'A'
- JB BAD_DIGIT
- CMP AL,'F'
- JA BAD_DIGIT
- SUB AL,'A'-10
- CLC
- RET
- BAD_DIGIT:
- STC
- RET
-
- sectview_com endp
-
- ;
-
- MSG0 DB 10,13
- DB " ************************ ",10,13
- DB "*** SECTVIEW.COM v0.2 ***",10,13
- DB " ************************ ",10,13
- DB "Juan C. Enrique / May 1992$"
-
- MSG00 DB 13,10,13,10,13
- DB "Num. de sector a leer: $"
-
- MSG1 DB 10,13
- DB "----------------------------------------"
- DB "----------------------------------------"
- DB 10,13,"$"
-
- MSG2 DB "SECTVIEW terminado!",10,13,"$"
-
- MSG51 DB 10,13,7,"* ERROR: Valor incorrecto! *$",10,13
- MSG52 DB 10,13,7,"* ERROR de lectura en drive A:!$",10,13
-
-
- ;
-
- BUFFER:
-
-
- CODE_SEG ENDS
- END SECTVIEW_COM
-
-
-